package com.icinfo.cloud.provider.peripheralinterface.xzzf.service;

import com.alibaba.fastjson.JSONObject;
import com.icinfo.cloud.provider.peripheralinterface.xzzf.dto.DingUserResultDto;
import com.icinfo.cloud.provider.peripheralinterface.xzzf.dto.OrgInfoResultDto;
import com.icinfo.cloud.provider.peripheralinterface.xzzf.dto.ZfPeopleDataDto;
import com.icinfo.cloud.provider.peripheralinterface.xzzf.vo.ZfAndManageUserInfoVO;
import com.icinfo.cloud.xzcf.provider.member.line.dto.LineDTO;
import com.icinfo.cloud.xzcf.provider.member.zfpeople.dto.ZfPeopleBaseInfoVO;

import java.util.List;

/**
 * 描述：行政执法接口服务
 *
 * @author xiangyuyu
 * @date 2022/4/8 11:52
 */
public interface IXzzfInterfaceService {

    /**
     * 描述：获取执法人员信息
     *
     * @param baseInfoRequest TODO：入参格式最好是优化成实体类
     * @return List<ZfPeopleBaseInfoVO>
     * @author xiangyuyu
     * @date 2022-04-08 13:54
     */
    List<ZfPeopleBaseInfoVO> getZfPeopleList(JSONObject baseInfoRequest);

    /**
     * 描述：获取执法证编号信息
     *
     * @param userId 用户Id
     * @return String 执法证编号信息
     * @author xiangyuyu
     * @date 2022-04-08 16:58
     */
    String getLawEnforcementCertWithUserId(String userId);

    /**
     * 描述：获取执法证编号信息
     *
     * @param userId 用户Id
     * @param orgCode 部门编码
     * @return String 执法证编号信息
     * @author xiangyuyu
     * @date 2022-04-08 16:58
     */
    String getLawEnforcementCertWithUserIdAndOrgCode(String userId, String orgCode);

    /**
     * 描述：根据条线code获取条线信息
     *
     * @param lineCode 行代码
     * @return {@link LineDTO }
     * @author shishengyao
     * @date 2022/06/29
     */
    LineDTO getLineInfoByLineCode(String lineCode);

    /**
     * 描述： 根据浙政钉id获取用户信息
     *
     * @author: zhengqiang
     * @date: 2022/8/19
     * @param: ZwdingAccountId
     * @return {@link DingUserResultDto}
     **/
    DingUserResultDto getUserByZwdAccountId(String ZwdingAccountId);

    /**
     * 描述： 根据统一社会信用代码获取机构信息
     *
     * @author: zhengqiang
     * @date: 2022/8/19
     * @param: unicode
     * @return {@link OrgInfoResultDto}
     **/
    OrgInfoResultDto getOrgInfoByUnicode(String unicode);

    /**
     * 描述： 根据用户id获取手机号
     *
     * @author: zhengqiang
     * @date: 2022/8/24
     * @param: userId
     * @return {@link String}
     **/
    String getUserPhoneByUserId(String userId);


    /**
     * 描述： 根据用户id获取签名base64及执法证
     *
     * @author: zhengqiang
     * @date: 2022/8/30
     * @param: userId
     * @return {@link String}
     **/
    ZfPeopleDataDto getZfPeopleSignDataByUserInfo(String userId);

    /**
     * 获取执法人员和管理人员用户信息（包含政务钉钉用户id）
     * @param userIdList
     * @return
     * @author mahan
     * @date 2022-10-18 15:54
     */
    List<ZfAndManageUserInfoVO> getZfAndManageUsersByUserIds(List<String> userIdList);
}
